import 'package:get/get.dart';

import 'recorddetails_state.dart';

class RecorddetailsLogic extends GetxController {
  final RecorddetailsState state = RecorddetailsState();

  @override
  void onInit() {
    super.onInit();
    // 获取录音详情数据
    fetchRecordDetails();
    
    // 模拟音频播放进度更新
    startProgressTimer();
  }

  @override
  void onClose() {
    // 停止计时器
    stopProgressTimer();
    super.onClose();
  }

  // 获取录音详情
  void fetchRecordDetails() {
    // 这里可以调用API获取录音详情
    // 模拟数据已在state中初始化
  }

  // 切换标签页
  void switchTab(int index) {
    state.currentTabIndex.value = index;
  }

  // 编辑文本
  void editText() {
    // 实现编辑文本功能
    Get.snackbar('提示', '编辑文本功能');
  }

  // 搜索内容
  void searchContent() {
    // 实现搜索内容功能
    Get.snackbar('提示', '搜索内容功能');
  }

  // 生成AI总结
  void generateAISummary() {
    // 实现生成AI总结功能
    Get.snackbar('提示', '生成AI总结功能');
  }

  // 切换全屏
  void toggleFullscreen() {
    // 实现切换全屏功能
    Get.snackbar('提示', '切换全屏功能');
  }

  // 播放/暂停
  void togglePlayPause() {
    state.isPlaying.value = !state.isPlaying.value;
    if (state.isPlaying.value) {
      // 开始播放
    } else {
      // 暂停播放
    }
  }

  // 跳转到指定位置
  void seekTo(double position) {
    state.currentPosition.value = position;
    // 实现音频跳转功能
  }

  // 更改播放速度
  void changePlaybackSpeed() {
    // 循环切换播放速度：1.0 -> 1.5 -> 2.0 -> 0.5 -> 1.0
    double newSpeed;
    if (state.playbackSpeed.value == 1.0) {
      newSpeed = 1.5;
    } else if (state.playbackSpeed.value == 1.5) {
      newSpeed = 2.0;
    } else if (state.playbackSpeed.value == 2.0) {
      newSpeed = 0.5;
    } else {
      newSpeed = 1.0;
    }
    
    state.playbackSpeed.value = newSpeed;
    Get.snackbar('播放速度', '${newSpeed}x');
  }

  // 后退5秒
  void rewindFiveSeconds() {
    double newPosition = state.currentPosition.value - 5;
    if (newPosition < 0) {
      newPosition = 0;
    }
    state.currentPosition.value = newPosition;
    // 实现音频后退功能
  }

  // 前进5秒
  void forwardFiveSeconds() {
    double newPosition = state.currentPosition.value + 5;
    if (newPosition > state.totalDuration.value) {
      newPosition = state.totalDuration.value;
    }
    state.currentPosition.value = newPosition;
    // 实现音频前进功能
  }

  // 切换收藏状态
  void toggleFavorite() {
    state.isFavorite.value = !state.isFavorite.value;
    // 实现收藏功能
    Get.snackbar('提示', state.isFavorite.value ? '已收藏' : '取消收藏');
  }

  // 模拟音频播放进度更新
  RxDouble progressIncrement = 0.1.obs;
  Worker? progressTimer;

  void startProgressTimer() {
    if (progressTimer != null) return;
    
    progressTimer = ever(state.isPlaying, (isPlaying) {
      if (isPlaying) {
        // 如果正在播放，启动定时器更新进度
        Future.doWhile(() async {
          await Future.delayed(Duration(milliseconds: 100));
          if (!state.isPlaying.value) return false;
          
          state.currentPosition.value += progressIncrement.value;
          if (state.currentPosition.value >= state.totalDuration.value) {
            state.currentPosition.value = state.totalDuration.value;
            state.isPlaying.value = false;
            return false;
          }
          return true;
        });
      }
    });
  }

  void stopProgressTimer() {
    progressTimer?.dispose();
    progressTimer = null;
  }
}
